/**
 * 生成SKU组合
 * @param {Array} specs 规格数组，格式如：[{name: '颜色', value: [{name: '黑色'}, {name: '白色'}]}, {name: '内存', value: [{name: '128g'}, {name: '256g'}]}]
 * @returns {Array} 返回SKU组合数组
 */
function generateSkuCombinations(specs) {
  // 处理空规格数组
  if (!specs || specs.length === 0) {
    return [];
  }

  // 提取所有规格名称
  const specNames = specs.map(spec => spec.name);
  
  // 提取所有规格值
  const specValues = specs.map(spec => spec.value.map(item => item.name));
  
  // 生成笛卡尔积
  function cartesianProduct(arrays) {
    return arrays.reduce((acc, curr) => {
      return acc.flatMap(x => curr.map(y => [...x, y]));
    }, [[]]);
  }
  
  // 生成所有可能的组合
  const combinations = cartesianProduct(specValues);
  
  // 转换为SKU对象数组
  return combinations.map(combination => {
    const specValues = combination.map((value, index) => ({
      specName: specNames[index],
      specValueName: value
    }));
    
    return {
      name: combination.join('-'),
      code: '', // 可以根据需要生成编码
      price: '', // 可以根据需要设置价格
      specValues
    };
  });
}

/**
 * 根据规格值获取对应的图片
 * @param {Array} specs 规格数组
 * @param {String} specName 规格名称
 * @param {String} specValueName 规格值名称
 * @returns {String} 返回对应的图片URL
 */
function getSpecImage(specs, specName, specValueName) {
  const spec = specs.find(s => s.name === specName);
  if (!spec) return '';
  
  const value = spec.value.find(v => v.name === specValueName);
  return value ? value.img : '';
}

// 支持ES模块
export { generateSkuCombinations, getSpecImage };

// 支持CommonJS
if (typeof module !== 'undefined' && module.exports) {
  module.exports = { generateSkuCombinations, getSpecImage };
} 